<?php 

session_start();

class order extends CI_Controller  {

        /**
        * Index Page for this controller.
        *
        * Maps to the following URL
        * 		http://example.com/index.php/welcome
        *	- or -  
        * 		http://example.com/index.php/welcome/index
        *	- or -
        * Since this controller is set as the default controller in 
        * config/routes.php, it's displayed at http://example.com/
        *
        * So any other public methods not prefixed with an underscore will
        * map to /index.php/welcome/<method_name>
        * @see http://codeigniter.com/user_guide/general/urls.html
        */
       private $_configs = null;
       function __construct()
        {
            parent::__construct();
            $this->load->helper('url');
            $this->load->library('javascript');
            $this->load->library('session');
            $this->load->library('smarty3','','smarty');
            $this->_configs["title"]="Quản Lý Đơn Hàng";
            $this->_configs["authority"]="order";
            $this->_configs["MinAuthority"]=0;
            $this->load->model('admin-planners/order_model','order_model');
            if(!isset($_SESSION["ADP-ORDER-DEL"]))$_SESSION["ADP-ORDER-DEL"]=true;
            if($this->checkauthority()<0){AccessDenied();}
        }
        
        public function index()
	{
            $this->smarty->assign('_SESSION', $_SESSION);
            $this->smarty->assign('configs', $this->_configs);
            $this->smarty->view('admin-planners/order/01_order','contentofview');
            $this->smarty->view('admin-planners/00_1_styles','styles');
            $this->smarty->view('admin-planners/00_2_scripts','scripts');
            $this->smarty->view('admin-planners/00_3_menus','menus');
            $this->smarty->view('admin-planners/10_template','view');
            $this->smarty->display('admin-planners/01_manage');
	}
        public function checkauthority(){
            if(isset($_SESSION["ADP-USER"]["AUTHORITY"])){
                $myau=-1;
                if(is_array($_SESSION["ADP-USER"]["AUTHORITY"])){
                    foreach ($_SESSION["ADP-USER"]["AUTHORITY"] as $au){
                        if($au["keyword"]=="view" && $myau==-1)$myau=0;
                        if($au["keyword"]=="admin")$myau=1;
                        if($au["keyword"]==$this->_configs["authority"]){
                            if($au["value"]==0 && $myau==-1) $myau=0;
                            if($au["value"]==1) $myau=1;
                        }
                    }
                }
                return $myau>=$this->_configs["MinAuthority"]?$myau:-1;
            }return -1;
        }
        function swicthDel(){
            if(isset($_POST["value"]) && ($_POST["value"]==1 or $_POST["value"]=="1")){
                $_SESSION["ADP-ORDER-DEL"]=true;
            }else{
                $_SESSION["ADP-ORDER-DEL"]=false;
            }
            $result=array(
                "code"      =>  0,
                "msg"       => "Đã thay đổi tùy chọn hiện dữ liệu xóa."
                );
            
            echo json_encode($result);
        }
        public function editor(){
            
            if($this->checkauthority()==1){
                $params=  isset($_POST["params"])?json_decode($_POST["params"],true):array();
                $OrderID=isset($_POST["OrderID"])?$_POST["OrderID"]:"";
                $rok=false;
                //echo($params["title"].":aa");return;
                if($OrderID!=""){
                    $rok=$this->order_model->update($OrderID,$params);
                }else{
                    $rok=$this->order_model->insert($params);
                }
                if($rok){
                    $result=array(
                    "code"      =>  1,
                    "msg"       => "Đã ".($OrderID!=""?" cập nhật ":" thêm mới ")." Đơn Hàng.<br/>Thông báo tự tắt sau 2 giây."
                    );
                }else{
                    $result=array(
                    "code"      =>  -1,
                    "msg"       => "Không thể ".($OrderID!=""?" cập nhật ":" thêm mới")." thông tin đơn hàng."
                    );
                }
            }else{
                $result=array(
                "code"      =>  -1,
                "msg"       => "Không thể cập nhật thông tin đơn hàng.<br/>Hãy Kiểm Tra lại quyền của bạn. Chúng tôi nhận thấy bạn thiếu quyền chỉnh sửa đơn hàng"
                );
            }
            echo json_encode($result);
        }
        public function changestatus(){
            
            if($this->checkauthority()==1){
                $params=  isset($_POST["params"])?json_decode($_POST["params"],true):array();
                $OrderID=isset($_POST["OrderID"])?$_POST["OrderID"]:"";
                $rok=false;
                //echo($params["title"].":aa");return;
                if($OrderID!=""){
                    $cancel=false;
                    $type="none";
                    $od=$this->order_model->get($OrderID);
                    $od=$od[0];
                    
                    if($od->Status=="New" && $params["Status"]!="New" && $params["Status"]!="Canceled" )$type="+";
                    elseif(     $od->Status!="New" && 
                            $od->Status!="Canceled" && 
                            (   $params["Status"]=="Canceled" || 
                                $params["Status"]=="New")
                        )$type="-";
                    if($od->PAmount-$od->Amount-$or->Sold<0){
                        $cancel=true;
                    }
                    if($cancel && $type=="+"){
                        $result=array(
                            "code"      =>  -1,
                            "msg"       => "Số lượng Sản Phẩm trong kho Không đủ."
                        );
                        echo json_encode($result);return;
                    }else{
                        $rok=$this->order_model->changeStatus($OrderID,$params["Status"],$type);
                        if($rok){
                            $result=array(
                            "code"      =>  1,
                            "msg"       => "Đã ".($OrderID!=""?" cập nhật ":" thêm mới ")." Đơn Hàng.<br/>Thông báo tự tắt sau 2 giây."
                            );
                        }else{
                            $result=array(
                            "code"      =>  -1,
                            "msg"       => "Không thể ".($OrderID!=""?" cập nhật ":" thêm mới")." thông tin đơn hàng."
                            );
                        }
                    }
                    
                    
                }
                
            }else{
                $result=array(
                "code"      =>  -1,
                "msg"       => "Không thể cập nhật thông tin đơn hàng.<br/>Hãy Kiểm Tra lại quyền của bạn. Chúng tôi nhận thấy bạn thiếu quyền chỉnh sửa đơn hàng"
                );
            }
            echo json_encode($result);
        }
        function delete(){
            if($this->checkauthority()==1){
                $OrderID=$_POST["OrderID"];
                $rok=$this->order_model->delete($OrderID);
                if($rok){
                    $result=array(
                    "code"      =>  1,
                    "msg"       => "Đã Xóa Đơn Hàng.<br/>Thông báo tự tắt sau 2 giây."
                    );
                }else{
                    $result=array(
                    "code"      =>  -1,
                    "msg"       => "Không thể xóa đơn hàng."
                    );
                }
            }else{
                $result=array(
                "code"      =>  -1,
                "msg"       => "Không thể xóa đơn hàng.<br/>Hãy Kiểm Tra lại quyền của bạn. Chúng tôi nhận thấy bạn thiếu quyền chỉnh sửa đơn hàng."
                );
            }
            echo json_encode($result);
            
        }
        function restore(){
            if($this->checkauthority()==1){
                $OrderID=$_POST["OrderID"];
                $rok=$this->order_model->restore($OrderID);
                if($rok){
                    $result=array(
                    "code"      =>  1,
                    "msg"       => "Đã Khôi Phục thông tin Đơn Hàng.<br/>Thông báo tự tắt sau 2 giây."
                    );
                }else{
                    $result=array(
                    "code"      =>  -1,
                    "msg"       => "Không thể khôi phục thông tin đơn hàng."
                    );
                }
            }else{
                $result=array(
                "code"      =>  -1,
                "msg"       => "Không thể khôi phục thông tin đơn hàng.<br/>Hãy Kiểm Tra lại quyền của bạn. Chúng tôi nhận thấy bạn thiếu quyền chỉnh sửa đơn hàng."
                );
            }
            echo json_encode($result);
        }
        
        function g(){
            echo "<pre>";
            echo json_encode(array(array("name"=>"ádasd","value"=>"new"),array("name"=>"ádasd","value"=>"new")));
            echo "</pre>";
        }
        function jqgrid_data(){
            $orders=array();
            $result['total_rows']=0;
            if($this->checkauthority()>=0){
                $result=$this->order_model->gettotal_rows();
                $rows=$result['rows'];
                // get data and store in a json array
                foreach ($rows as $row) {
                    $detail= json_decode($row->OrderDetail);
                    $orders[] = array(
                        '_OrderID_'     => $row->OrderID,
                        '_CustomerID_'  => $row->CustomerID,
                        '_ProductName_'   => $row->ProductName,
                        '_OrderDate_'   => $row->OrderDate,
                        '_RequiredDate_'=> $row->RequiredDate,
                        '_ShippedDate_' => $row->ShippedDate,
                        '_ShipVia_'     => $row->ShipVia,
                        '_Freight_'     => $row->Freight,
                        '_ShipName_'    => $row->ShipName,
                        '_ShipAddress_' => $row->ShipAddress,
                        '_Monney_'      => ($row->Monney),
                        '_Status_'      => json_encode(array("_OrderID_"=>$row->OrderID,"_StatusName_"=>$row->Status,"_Edit_"=>0)),
                        '_Insert_'      => $row->Insert,
                        '_Update_'      => $row->Update,
                        '_CustomerName_'=> $row->CustomerName,
                        '_ShipPhone_' => $detail->ShipInfo->ShipPhone,
                        '_Order_'       => json_encode(array(
                            "_OrderID_"=>$row->OrderID,
                            "_Delete_"=>$row->Delete,
                            "_Lock_"=>null
                        ))
                    );
                }
            }
            $data[] = array(
                'TotalRows' => $result['total_rows'],
                'Rows' => $orders
            );
            echo json_encode($data);
        }
        function jqgrid_data_detail($OrderID=null){
            $OrdersDetail=array();
            $result['total_rows']=0;
            if($this->checkauthority()>=0){
                $result=$this->order_model->gettotal_rows_detail($OrderID);
                $rows=$result['rows'];
                // get data and store in a json array
                foreach ($rows as $row) {
                    $OrdersDetail[] = array(
                        '_ProductID_'   => $row->ProductID,
                        '_ProductName_' => $row->ProductName,
                        '_UnitPrice_'   => ($row->UnitPrice),
                        '_Quantity_'    => $row->Quantity,
                        '_Discount_'    => $row->Discount,
                        '_Monney_'    => ($row->Quantity*$row->UnitPrice*(100-$row->Discount)/100)
                    );
                }
            }
            $data[] = array(
                'TotalRows' => $result['total_rows'],
                'Rows' => $OrdersDetail
            );
            echo json_encode($data);
        }
        
        public function ShowDetail(){
            $_POST["OrderID"]=isset($_POST["OrderID"])?$_POST["OrderID"]:"11087";
            if(isset($_POST["OrderID"])){
                $order=$this->order_model->get($_POST["OrderID"]);
                $order=$order[0];
                if(isset($order->OrderDetail))
                    $order->OrderDetail=  json_decode($order->OrderDetail);
                $order=  objectToArray($order);
                //echo "<pre>";print_r($order);echo "</pre>";
            }else{
                echo "Không tồn tại đơn hàng.";
            }
            $this->smarty->assign('order', $order);
            $this->smarty->display('admin-planners/order/02_order_detail');
        }
        
       
        
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */